package unsafe;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
//java.util.ConcurrentModificationException 并发修改异常！
public class ListTest {
    public static void main(String[] args) {
//      并发下ArrayList是不安全的
        /**
         * 解决方案
         * 1、使用List<String> arrayList = new Vector<>();看源码会发现，vector先出来的，既然vector先出来都知道用synchronized去解决安全问题，那么ArrayList就不会想到吗？肯定会，但是为什么不能使用synchronized来解决呢
         * 2、使用List<Object> objects = Collections.synchronizedList(new ArrayList<>());
         * 3、使用CopyOnWriteArrayList<Object> objects = new CopyOnWriteArrayList<>();
         */

        List<String> arrayList = new ArrayList<>();
        for(int i=1;i<=10;i++){
            new Thread(()->{
                arrayList.add(UUID.randomUUID().toString().substring(0,5));
                System.out.println(arrayList);
            },String.valueOf(i)).start();
        }

    }
}